package remote

import (
	"fmt"
	"strings"
)

// Commands defines three types of structures used to describe remote commands and file operations
type Commands []string

type Command struct {
	Cmds   Commands `json:"cmds,omitempty"`   // List of commands to execute
	FileUp []File   `json:"fileUp,omitempty"` // List of files to upload
}
type File struct {
	Src string `json:"src,omitempty"` // Source file path
	Dst string `json:"dst,omitempty"` // Destination file path
}

func (c *Command) String() string {
	return strings.Join(c.Cmds, " && ")
}

func (c *Command) List() []string {
	return c.Cmds
}

func (c *Command) Sudo(user string) {
	if user != "root" {
		for i, cmd := range c.Cmds {
			if strings.HasPrefix(cmd, "sudo") {
				continue
			}
			c.Cmds[i] = fmt.Sprintf("sudo %s", cmd)
		}
	}
}
